As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
In many information handling systems, a basic input/output system (BIOS), for example a Unified Extensible Firmware Interface (UEFI), is capable of operating in a pre-boot mode in which the BIOS executes certain instructions prior to loading and execution of an operating system. In such pre-boot mode, memory management may not be as effective as it is with an operating system, and additionally, a BIOS typically executes in a single-threaded boot environment with no scheduler, kernel, tasklets, work queues, etc., which might be present within an operating system in order to improve performance, including the processing of bulk payloads received via a network or a storage device. Accordingly, pre-boot setup and management activity including bulk image offloading such as firmware updates, operating system deployments, and other images may be very time consuming, which may lead to negative user experience.
To illustrate, offloading bulk images over a network in pre-boot mode involves generating multiple copies (e.g., approximately nine copies) to receive the payload from the bottom layer of a network stack, to the top layer of the network stack, and then to the bottom layer of a file system stack. FIG. 4 depicts a diagram of an example network and file system stack 2 illustrating the generation of such multiple copies. As shown in FIG. 1, when a network datagram (e.g., packet, frame) is received from a network 10 via a network interface card, a network interface card driver layer 12 may transfer (e.g., via direct memory access or “DMA”) a copy of such received data into a receive buffer 14 (e.g., a circular ring buffer) of memory 6. A network interface card driver layer 12 may also copy the data of the received packet from receive buffer 14 into an Internet Protocol (IP) buffer 16 of memory 6. In turn, an IP layer 18 may copy data to a Transmission Control Protocol (TCP) and/or User Datagram Protocol (UDP) buffer 20 of memory 6 by stripping an IP header from the packet. A TCP/UDP layer 22 may copy data into a BIOS network protocol buffer 24 of memory 6 by stripping a TCP/UDP header from the remaining packet. A Common Internet File System (CIFS) and/or Network File System (NFS) file system network protocol layer 26 may perform another copy of data to a BIOS/UEFI application buffer 28 by stripping an application-level protocol header, leaving the payload of the packet remaining. Thus, up to five copies of the payload data may be made to transfer data from a network interface to BIOS/UEFI application buffer 28 for use by a BIOS at BIOS/UEFI application layer 30.
To move the data payload from BIOS/UEFI application layer 30 to storage resource 44, BIOS/UEFI application layer 30 may first copy the data to a file system buffer 32. BIOS file system layer 34 may then copy the data to a block sub-system buffer 36. BIOS block sub-system layer 38 may in turn execute a cache flush to a storage driver buffer 40. A storage device driver 42 may then write the payload to a storage resource 44 (e.g., using DMA). Thus, up to four copies of the payload data may be made to transfer data from BIOS/UEFI application layer 30 to storage resource 44, for a total of nine copies of data to transfer the data from network 10 to storage resource 44. These multiple copies may force a BIOS in pre-boot mode to degrade performance, especially when performing bulk image transfers such as in an operating system deployment, firmware update, or other large file transfers.